#ifndef CLIENTE_H
#define CLIENTE_H

#include "ICliente.h"
#include "Excursion.h"
#include "ListaImp.h"

class Cliente : public ICliente{
	friend ostream &operator<<(ostream&, const ICliente &);
private:
	Cadena ci;
	Cadena nombre;
	Cadena fechaRegistro;
	nat montoComprado;
	Puntero<Lista<Puntero<Excursion>>> excursionesCompradas;

public:	
	Cliente(const Cadena &ci, const Cadena &nom, const Cadena &fechaReg);
	virtual ~Cliente();

	Cadena ObtenerCI() const;
	Cadena ObtenerNombre() const;
	Cadena ObtenerFechaRegistro() const;
	nat ObtenerMontoComprado() const;
	void incrementarMontoComprado(nat &monto);
	void agregarExcursionComprada(Puntero<Excursion> &exc);
	Puntero<Iterador<Puntero<Excursion>>> ObtenerExcursionesCompradas();

	bool operator==(const ICliente& c) const;

	bool operator<(const ICliente& c) const;
	bool operator>(const ICliente& c) const;

};

#endif